package leetcode;

//将一个给定字符串根据给定的行数，以从上往下、从左到右进行 Z 字形排列。
//比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时，排列如下：
//L   C   I   R
//E T O E S I I G
//E   D   H   N
//之后，你的输出需要从左往右逐行读取，产生出一个新的字符串，比如："LCIRETOESIIGEDHN"。
//
//请你实现这个将字符串进行指定行数变换的函数：
//
//string convert(string s, int numRows);

import java.util.ArrayList;
import java.util.List;

public class problems_006 {

    public static void main(String[] arge){
        System.out.println(convert("123456789",4));
    }
    public static String convert(String s, int numRows) {
        if (numRows == 1) return s;
        StringBuilder ret = new StringBuilder();
        int n = s.length();
        int cycleLen = 2 * numRows - 2;

        for (int i = 0; i < numRows; i++) {
            for (int j = 0; j + i < n; j += cycleLen) {
                ret.append(s.charAt(j + i));
                if (i != 0 && i != numRows - 1 && j + cycleLen - i < n)
                    ret.append(s.charAt(j + cycleLen - i));
            }
        }
        return ret.toString();
    }

//    public static void main(String[] arge){
//        System.out.println(convert("123456789",1));
//    }
//    public static String convert(String s, int numRows) {
//        if(null == s || "".equals(s)) return "";
//        if(numRows == 1) return s;
//        // 2行
//        StringBuffer ret = new StringBuffer();
//        if(numRows == 2) {
//            for (int i = 0; i < s.length() / 2; i++) {
//                ret.append(s.charAt(i*2));
//            }
//            if(s.length() % 2 == 1){
//                ret.append(s.charAt(s.length()-1));
//            }
//            ret.append("\n");
//            for (int i = 0; i < s.length() / 2; i++) {
//                ret.append(s.charAt(i*2+1));
//            }
//            return ret.toString();
//        }
//        // 多行
//        // 基本值
//        int groupNum = (numRows - 1) * 2; // 每组数量
//        int sLength = s.length();
//        int lineLenth = (sLength / groupNum) * (groupNum / 2)   ; // 每行长度
//        if((sLength % groupNum) % 2 != 0) {
//            if((sLength % groupNum) % 2 > (groupNum / 2)){
//                lineLenth += (sLength % groupNum) % 2 - groupNum / 2;
//            }else {
//                lineLenth++;
//            }
//        }
//
//        // 处理
////        for (int rowIndex = 0; rowIndex < numRows; rowIndex++) {
////            for (int lineIndex = 0; lineIndex < lineLenth; lineIndex++) {
////                if(lineIndex % (groupNum / 2) == 0){
////
////
////                    lineIndex / (groupNum / 2) * groupNum + (rowIndex + 1)
////
////
////
////                    ret.append(s.charAt(                      ));
////                    continue;
////                }
////                ret.append("_");
////            }
////            ret.append("\n");
////        }
//
//        return "";
//    }
}
